package pfc.etsii.ull.es.server;

import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import pfc.etsii.ull.es.client.GraficaService;
import pfc.etsii.ull.es.server.SQLUtils.CombinarConsultas;
import pfc.etsii.ull.es.server.plugins.CargadorPlugins;
import pfc.etsii.ull.es.server.plugins.Plugins;
import pfc.etsii.ull.es.shared.Grafica;
import pfc.etsii.ull.es.shared.DatosSQL;
import pfc.etsii.ull.es.shared.generated.Informe;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;



@SuppressWarnings("serial")
public class GraficaServiceImpl extends RemoteServiceServlet implements GraficaService {

	@Override
	public Grafica graficaService(Map<String, List<String>> parameters) {
		Informe datosXML = null;
		CombinarConsultas.parametros = parameters;
		Grafica.parametros = parameters;
		XMLfile xml = new XMLfile();
		DatosSQL datosSQL = new DatosSQL();
		
		try {
			datosXML = xml.getXmlGrafica();
			
			datosSQL.setTituloGrafica(CombinarConsultas.getTituloGrafica(datosXML));
			datosSQL.setSubtituloGrafica(CombinarConsultas.getSubtituloGrafica(datosXML));
			datosSQL.setTituloEjeX(CombinarConsultas.getTituloEjeX(datosXML));
			datosSQL.setDatosEjeX(CombinarConsultas.getDatosEjeX(datosXML));
			
			for (Entry<Integer, String> iterador : CombinarConsultas.getTituloEjesY(datosXML).entrySet()) {
				datosSQL.addTituloEjeY(iterador.getKey(), iterador.getValue());
				datosSQL.addTitulosSeries(iterador.getKey(), CombinarConsultas.getTituloSeries(iterador.getKey(), datosXML));
				datosSQL.addDatosSerie(iterador.getKey(), CombinarConsultas.getDatosSeries(iterador.getKey(), datosXML));
				String mapaSalida = CombinarConsultas.mapasSalidaDeEjesY(iterador.getKey(), datosXML);
				if (mapaSalida != null)
					datosSQL.addMapaSalida(iterador.getKey(), mapaSalida);
			}
			
			System.out.println("CARGANDO LOS PLUGINS --------------");
			boolean cargarPlugins = CargadorPlugins.cargarPlugins();
			
			if (cargarPlugins) {
				Plugins[] plugins = CargadorPlugins.getPlugins();
				System.out.println("CARGADOS LOS PLUGINS");
			} else {
				System.out.println("No se cargaron los plugins");
			}


			
			
		}catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		Grafica grafica = new Grafica ();
		grafica.setDatos(datosXML);
		grafica.setDatosSQL(datosSQL);
		return grafica;

	}

	
	
}
